package concreto.redeneural;

import java.util.ArrayList;
import java.util.List;

import comportamento.neuronio.INeuronio;
import comportamento.redeneural.ICamadaNeuralFeedFoward;

public class CamadaNeuralFeedFowardMP implements ICamadaNeuralFeedFoward{

	private List<INeuronio> neuronios = new ArrayList<INeuronio>(); 

	public void adicionarNeuronio(INeuronio neuronio) {

		neuronios.add(neuronio);
	}

	public void removerNeuronio(INeuronio neuronio) {

		neuronios.remove(neuronio);
	}

	public double[] estimular(double[] estimulos) {

		int quantidadeEstimulos = estimulos.length;
		double[] estimulacao = new double[quantidadeEstimulos];
		double[] saidas = null;

		int aux = 0;
		int saidas_aux = 0;

		for(INeuronio n : neuronios) {

			estimulacao[aux++] = n.estimular(estimulos);
			saidas_aux++;
		}

		saidas = new double[saidas_aux];

		for(int i = 0; i < saidas_aux; i++) {
			saidas[i] = estimulacao[i];
		}

		return saidas;
	}



	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {

		StringBuffer b = new StringBuffer("");
		int contNeuronios = 1;

		for(INeuronio n : neuronios) {
			b.append("\n\n[Neuronio " + (contNeuronios++) + "]\n");
			b.append(n);
		}

		return b.toString();
	}

	public void treinar(double[][] entradas, double[][] saidas) {
		// TODO Auto-generated method stub
	}

	public void treinar(double[] treino, double[][] saidas) {
		// TODO Auto-generated method stub

	}

	public void treinar(double[] treino, double[] saidas) {
		// TODO Auto-generated method stub

	}

}
